/**   
 * @Title: LogManager.java 
 * @Package com.jpt.mds.core 
 * @Description: TODO 日志开关
 * @author li_xiaoyue  
 * @version 2013-4-2  
 */
package com.hktf.corelib.utils;

import android.util.Log;

/**
 * 日志类
 * 
 * @author li_xiaoyue
 * @date 2013-4-8 下午2:11:01
 */
public class LogMds {

	/**
	 * 日志类型
	 */
	public static final int DEFAULT_LOG = 0x0;

	/**
	 * 详细信息日志类型
	 */
	public static final int DEFAULT_LOG_VERBOSE = DEFAULT_LOG + 1;

	/**
	 * 调试日志类型
	 */
	public static final int DEFAULT_LOG_DEBUG = DEFAULT_LOG + 2;

	/**
	 * 信息日志类型
	 */
	public static final int DEFAULT_LOG_INFO = DEFAULT_LOG + 3;

	/**
	 * 警告调试日志类型
	 */
	public static final int DEFAULT_LOG_WARN = DEFAULT_LOG + 4;

	/**
	 * 错误日志类型
	 */
	public static final int DEFAULT_LOG_ERROR = DEFAULT_LOG + 5;

	/**
	 * 日志输出逻辑
	 * 
	 * @param Tag
	 * @param Message
	 * @param Style
	 * @return void
	 * @throws
	 */

	public static void LogShow(String Tag, String Message, int Style) {
		if(Message==null){
			return;
		}
		if (Config.LOG_OFF_DEBUG) {
			switch (Style) {
			case DEFAULT_LOG_DEBUG:
				Log.d(Tag, Message);
				break;
			case DEFAULT_LOG_ERROR:
				Log.e(Tag, Message);
				break;
			case DEFAULT_LOG_INFO:
				Log.i(Tag, Message);
				break;
			case DEFAULT_LOG_VERBOSE:
				Log.v(Tag, Message);
				break;
			case DEFAULT_LOG_WARN:
				Log.w(Tag, Message);
				break;
			}
		}
	}

	/**
	 * 详细信息日志类型输出
	 * 
	 * @param Tag
	 * @param Message
	 * @return void
	 * @throws
	 */
	public static void v(String Tag, String Message) {
		LogShow(Tag, Message, DEFAULT_LOG_VERBOSE);
	}

	/**
	 * 调试日志输出
	 * 
	 * @param Tag
	 * @param Message
	 * @return void
	 * @throws
	 */
	public static void d(String Tag, String Message) {
		LogShow(Tag, Message, DEFAULT_LOG_DEBUG);
	}

	/**
	 * 信息日志输出
	 * 
	 * @param Tag
	 * @param Message
	 * @return void
	 * @throws
	 */
	public static void i(String Tag, String Message) {
		LogShow(Tag, Message, DEFAULT_LOG_INFO);
	}

	/**
	 * 警告日志输出
	 * 
	 * @param Tag
	 * @param Message
	 * @return void
	 * @throws
	 */
	public static void w(String Tag, String Message) {
		LogShow(Tag, Message, DEFAULT_LOG_WARN);
	}

	/**
	 * 警告日志输出
	 * 
	 * @param Tag
	 * @param Message
	 * @return void
	 * @throws
	 */
	public static void w(String Tag, Throwable tr) {
		if (Config.LOG_OFF) {
			Log.w(Tag, tr);
		}
	}

	/**
	 * 警告日志输出
	 * 
	 * @param Tag
	 * @param Message
	 * @return void
	 * @throws
	 */
	public static void w(String Tag, String Message, Throwable tr) {
		if (Config.LOG_OFF) {
			Log.w(Tag, Message, tr);
		}
	}

	/**
	 * 错误日志输出
	 * 
	 * @param Tag
	 * @param Message
	 * @return void
	 * @throws
	 */
	public static void e(String Tag, String Message) {
		LogShow(Tag, Message, DEFAULT_LOG_ERROR);
	}

	/**
	 * 错误日志输出
	 * 
	 * @param Tag
	 * @param Message
	 * @return void
	 * @throws
	 */
	public static void e(String Tag, String Message, Throwable tr) {
		if (Config.LOG_OFF) {
			Log.e(Tag, Message, tr);
		}
	}
	private static final int MAX_LEN=1000;

	/**
	 * 调试日志输出
	 *
	 * @param Tag
	 * @param Message
	 * @return void
	 * @throws
	 */
	public static void longLog(String Tag, String Message) {
		if (Message == null) {
			return;
		}
		int nLen = Message.length();
		int packages = (nLen + MAX_LEN - 1) / MAX_LEN;//分包数
		int currentIndex=0;
		for (int i = 0; i < packages; i++) {
			if(i==packages-1){
				LogShow(Tag, Message.substring(currentIndex,nLen), DEFAULT_LOG_WARN);
			}else {
				LogShow(Tag, Message.substring(currentIndex,currentIndex+MAX_LEN), DEFAULT_LOG_WARN);
				currentIndex+=MAX_LEN;
			}
		}
	}
}